> TODO
	>> namespace机制
		>>> namespace 不依赖其他组件（除apiserver）
	>> gloo
		>>> gloo先部署到k8s
	>> go 面试题和go的培训
		>>> go 语言圣经每一节做一道练习
	>> 文毅的辅导
		>>> 怎么获取etcd的值
		>>> 怎么获取 本次cr的值

> namespace机制
	>> 通过使用Namespace来组织k8s的各种对象，可以实现对用户的分组，即“多租户”管理。对不同的租户还可以进行单独的资源配额设置和管理，使得整个集群的资源配置非常灵活、方便。
	>> 作用
	资源隔离：可为不同的团队/用户（或项目）提供虚拟的集群空间，共享同一个Kubernetes集群的资源。比如可以为团队A创建一个Namespace ns-a，团队A的项目都部署运行在 ns-a 中，团队B创建另一个Namespace ns-b，其项目都部署运行在 ns-b 中，或者为开发、测试、生产环境创建不同的Namespace，以做到彼此之间相互隔离，互不影响。我们可以使用 ResourceQuota 与 Resource LimitRange 来指定与限制 各个namesapce的资源分配与使用
	权限控制：可以指定某个namespace哪些用户可以访问，哪些用户不能访问


> 单独剥离的apiserver经过实践也是可以进行namespace的管理的
************************************************************
history
------------------------------------------------------------
[root@apigateway1 ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   7d
kube-node-lease   Active   7d
kube-public       Active   7d
kube-system       Active   7d
[root@apigateway1 ~]# kubectl get ns default
NAME      STATUS   AGE
default   Active   7d
[root@apigateway1 ~]#
[root@apigateway1 ~]# cat << EOF >> ns1.yml
> apiVersion: v1
> kind: Namespace
> metadata:
>   name: dev
> EOF
[root@apigateway1 ~]# cat ns1.yml
apiVersion: v1
kind: Namespace
metadata:
  name: dev
[root@apigateway1 ~]# kubectl apply -f ns1.yml
namespace/dev created
[root@apigateway1 ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   7d
dev               Active   6s
kube-node-lease   Active   7d
kube-public       Active   7d
kube-system       Active   7d
------------------------------------------------------------
************************************************************

> go <<
************************************************************
test.go
------------------------------------------------------------
// x << y 相当于  x乘以2**y
a:=6
a<<3
// a  48
------------------------------------------------------------
************************************************************

> go 闭包
************************************************************
closure.go
------------------------------------------------------------
// squares返回一个匿名函数。
// 该匿名函数每次被调用时都会返回下一个数的平方。
func squares() func() int {
    var x int
    return func() int {
        x++
        return x * x
    }
}
func main() {
    f := squares()
    fmt.Println(f()) // "1"
    fmt.Println(f()) // "4"
    fmt.Println(f()) // "9"
    fmt.Println(f()) // "16"
}
------------------------------------------------------------
************************************************************

